package com.c2b.algorithm.leetcode.base;

/**
 * 回文数
 * <p>给你一个整数x，如果x是一个回文整数，返回true；否则返回 false 。</>
 *
 * @author c2b
 * @since 2022/5/19 11:03
 */
public class LC0009 {

    /**
     * 判断回文数
     *
     * @param x 整数
     * @return boolean 如果x是一个回文整数，返回true；否则返回 false
     * @author c2b
     */
    public boolean isPalindrome(int x) {
        // 整数小于0,不是回文整数
        // 整数以0 结尾但不是0
        if (x < 0 || (x % 10 == 0 && x != 0)) {
            return false;
        }
        int revertedNum = 0;
        // 反转后半段，如果是奇数位,revertedNum将会比x多一位
        while (revertedNum < x) {
            revertedNum = revertedNum * 10 + x % 10;
            x /= 10;
        }
        // 当数字长度为奇数时，我们可以通过 revertedNumber/10 去除处于中位的数字。
        return x == revertedNum || x == revertedNum / 10;
    }

    public static void main(String[] args) {
        System.out.println(new LC0009().isPalindrome(10));
    }
}
